home *** CD-ROM | disk | FTP | other *** search
/ Chaos CD Blue / Chaos_CD_Blue__[1999].iso / contrib / cryptron / Diplom_original / idea6_en.asm < prev    next >
Assembly Source File  |  1999-11-21  |  5KB  |  374 lines

  1.  
  2. data0        .SET    00600h
  3. data1        .SET    00601h
  4. data2        .SET    00602h
  5. data3        .SET    00603h
  6. data4        .SET    00604h
  7. data5        .SET    00605h
  8.  
  9. temp        .SET    00606h
  10. ser_dat        .SET    00607h
  11.  
  12. key0        .SET    00608h
  13. key1        .SET    00609h
  14. key2        .SET    0060Ah
  15. key3        .SET    0060Bh
  16. key4        .SET    0060Ch
  17. key5        .SET    0060Dh
  18. key6        .SET    0060Eh
  19. key7        .SET    0060Fh
  20.  
  21. e_key_begin    .SET    00610h
  22. e_key_end    .SET    00640h
  23.  
  24. shift0        .SET    00670h
  25. shift1        .SET    00671h
  26. shift2        .SET    00672h
  27. shift3        .SET    00673h
  28. shift4        .SET    00674h
  29. shift5        .SET    00675h
  30. shift6        .SET    00676h
  31. shift7        .SET    00677h
  32.  
  33. ; ---------------------------------------------------------------------------
  34.  
  35.         .DS    00608h
  36.  
  37. init_test_key:    .WORD    00000h, 01111h, 02222h, 03333h
  38.         .WORD    04444h, 05555h, 06666h, 07777h
  39.  
  40.  
  41.         .DS    00670h
  42.  
  43. init_test_shft:    .WORD    00000h, 00000h, 00000h, 00000h
  44.         .WORD    00000h, 00000h, 00000h, 00000h
  45.  
  46. ; ---------------------------------------------------------------------------
  47.  
  48.         .PS    0FA00h
  49.         .ENTRY
  50. RESET:        B    start
  51.  
  52.         .PS    0FA0Ah
  53. B0RINT:        B    RINT
  54.  
  55. ; -----------------------------------------------------------------------------
  56.  
  57.         .PS    0FB00h
  58.  
  59. start:        SPM    0
  60.         RSXM
  61.  
  62.         FORT    1
  63.         RTXM
  64.         SFSM
  65.  
  66.         LDPK    0Ch
  67.  
  68.         CALL    idea_key_exp, *, 7
  69.  
  70.         LDPK    00h
  71.         LARP    00h
  72.         LARK    AR0,0
  73.         LACK    010h
  74.         SACL    004h
  75.         EINT
  76.  
  77. loop:        B    loop
  78.  
  79. ; -----------------------------------------------------------------------------
  80.  
  81. RINT:        LDPK    00h
  82.         SST1    060h
  83.         LAC    000h
  84.         LDPK    0Ch
  85.  
  86.         SACL    ser_dat
  87.  
  88.         CALL    idea_cyk, *, 7
  89.  
  90.         LAC    ser_dat
  91.         XOR    data0
  92.         CALL    idea_shift, *, 7
  93.  
  94.         LDPK    00h
  95.         SACL    001h
  96.         LST1    060h
  97.         EINT
  98.         RET
  99.  
  100. ; ---------------------------------------------------------------------------
  101.  
  102. idea_key_exp:    LRLK    AR7,e_key_begin        ; idea_key
  103.         LRLK    AR0,e_key_end
  104. idea_key_exp_3:
  105.         RPTK    007h
  106.         BLKD    key0, *+
  107.  
  108.         LARK    AR2, 018h
  109.         LARP    2
  110. idea_key_exp_2:    ZALH    key0
  111.         ROL
  112.  
  113.         ZALH    key6
  114.         OR    key7
  115.         ROL
  116.         SACL    key7
  117.         SACH    key6
  118.  
  119.         ZALH    key4
  120.         OR    key5
  121.         ROL
  122.         SACL    key5
  123.         SACH    key4
  124.  
  125.         ZALH    key2
  126.         OR    key3
  127.         ROL
  128.         SACL    key3
  129.         SACH    key2
  130.  
  131.         ZALH    key0
  132.         OR    key1
  133.         ROL
  134.         SACL    key1
  135.         SACH    key0
  136.  
  137.         BANZ    idea_key_exp_2, *-
  138.  
  139.         LARP    7
  140.         CMPR    02
  141.         BBZ    idea_key_exp_3
  142.  
  143.     ;    RET
  144.  
  145.         LRLK    AR7,e_key_begin        ; idea_key
  146.         LRLK    AR0,e_key_end
  147. idea_key_exp_1:
  148.         LAC    *
  149.         XORK    00DEAh
  150.         SACL    *+
  151.  
  152.         CMPR    02
  153.         BBZ    idea_key_exp_1
  154.  
  155.         RET
  156.  
  157. ; ---------------------------------------------------------------------------
  158.  
  159. idea_shift:    ANDK    000FFh
  160.  
  161.         LRLK    AR7, 00676h
  162.         RPTK    006h
  163.         DMOV    *-
  164.         SACL    shift0
  165.  
  166.         RET
  167.  
  168. ; ---------------------------------------------------------------------------
  169.  
  170. idea_cyk:    LT    shift7
  171.         MPYK    00100h
  172.         PAC
  173.         OR    shift6
  174.         SACL    data3
  175.  
  176.         LT    shift5
  177.         MPYK    00100h
  178.         PAC
  179.         OR    shift4
  180.         SACL    data2
  181.  
  182.         LT    shift3
  183.         MPYK    00100h
  184.         PAC
  185.         OR    shift2
  186.         SACL    data1
  187.  
  188.         LT    shift1
  189.         MPYK    00100h
  190.         PAC
  191.         OR    shift0
  192.         SACL    data0
  193.  
  194. ; ---------------------------------------------------------------------------
  195.  
  196. idea_start:    LRLK    AR7,e_key_begin        ; idea_key
  197.         LRLK    AR0,e_key_end
  198.  
  199. idea_loop:    LAC    *
  200.         BZ    idea_00
  201.         LAC    data0
  202.         BZ    idea_01
  203.         LT    data0
  204.         MPYU    *+
  205.         PAC
  206.         SPH    temp
  207.         SUBH    temp
  208.         SUB    temp
  209.         BNC    idea_02
  210.         B    idea_03
  211. idea_00:    LAC    data0
  212.         B    idea_04, *+
  213. idea_01:    LAC    *+
  214. idea_04:    NEG
  215. idea_02:    ADDK    001h
  216. idea_03:    SACL    data0
  217.  
  218.         LAC    data1
  219.         ADD    *+
  220.         SACL    data1
  221.  
  222.         LAC    data2
  223.         ADD    *+
  224.         SACL    data2
  225.  
  226.         LAC    *
  227.         BZ    idea_10
  228.         LAC    data3
  229.         BZ    idea_11
  230.         LT    data3
  231.         MPYU    *+
  232.         PAC
  233.         SPH    temp
  234.         SUBH    temp
  235.         SUB    temp
  236.         BNC    idea_12
  237.         B    idea_13
  238. idea_10:    LAC    data3
  239.         B    idea_14, *+
  240. idea_11:    LAC    *+
  241. idea_14:    NEG
  242. idea_12:    ADDK    001h
  243. idea_13:    SACL    data3
  244.  
  245.         LAC    data0
  246.         XOR    data2
  247.         SACL    data4
  248.  
  249.         LAC    data1
  250.         XOR    data3
  251.         SACL    data5
  252.  
  253.         LAC    *
  254.         BZ    idea_20
  255.         LAC    data4
  256.         BZ    idea_21
  257.         LT    data4
  258.         MPYU    *+
  259.         PAC
  260.         SPH    temp
  261.         SUBH    temp
  262.         SUB    temp
  263.         BNC    idea_22
  264.         B    idea_23
  265. idea_20:    LAC    data4
  266.         B    idea_24, *+
  267. idea_21:    LAC    *+
  268. idea_24:    NEG
  269. idea_22:    ADDK    001h
  270. idea_23:    SACL    data4
  271.  
  272.         ADD    data5
  273.         SACL    data5
  274.  
  275.         LAC    *
  276.         BZ    idea_30
  277.         LAC    data5
  278.         BZ    idea_31
  279.         LT    data5
  280.         MPYU    *+
  281.         PAC
  282.         SPH    temp
  283.         SUBH    temp
  284.         SUB    temp
  285.         BNC    idea_32
  286.         B    idea_33
  287. idea_30:    LAC    data5
  288.         B    idea_34, *+
  289. idea_31:    LAC    *+
  290. idea_34:    NEG
  291. idea_32:    ADDK    001h
  292. idea_33:    SACL    data5
  293.  
  294.         ADD    data4
  295.         SACL    data4
  296.  
  297.         LAC    data0
  298.         XOR    data5
  299.         SACL    data0
  300.  
  301.         LAC    data1
  302.         XOR    data4
  303.         SACL    data1
  304.  
  305.         LAC    data2
  306.         XOR    data5
  307.         SACL    data2
  308.  
  309.         LAC    data3
  310.         XOR    data4
  311.         SACL    data3
  312.  
  313.         LAC    data2
  314.         DMOV    data1
  315.         SACL    data1
  316.  
  317.         CMPR    1
  318.         BBNZ    idea_loop
  319.  
  320.         LAC    data2
  321.         DMOV    data1
  322.         SACL    data1
  323.  
  324.         LAC    *
  325.         BZ    idea_40
  326.         LAC    data0
  327.         BZ    idea_41
  328.         LT    data0
  329.         MPYU    *+
  330.         PAC
  331.         SPH    temp
  332.         SUBH    temp
  333.         SUB    temp
  334.         BNC    idea_42
  335.         B    idea_43
  336. idea_40:    LAC    data0
  337.         B    idea_44, *+
  338. idea_41:    LAC    *+
  339. idea_44:    NEG
  340. idea_42:    ADDK    001h
  341. idea_43:    SACL    data0
  342.  
  343.         LAC    data1
  344.         ADD    *+
  345.         SACL    data1
  346.  
  347.         LAC    data2
  348.         ADD    *+
  349.         SACL    data2
  350.  
  351.         LAC    *
  352.         BZ    idea_50
  353.         LAC    data3
  354.         BZ    idea_51
  355.         LT    data3
  356.         MPYU    *+
  357.         PAC
  358.         SPH    temp
  359.         SUBH    temp
  360.         SUB    temp
  361.         BNC    idea_52
  362.         B    idea_53
  363. idea_50:    LAC    data3
  364.         B    idea_54, *+
  365. idea_51:    LAC    *+
  366. idea_54:    NEG
  367. idea_52:    ADDK    001h
  368. idea_53:    SACL    data3
  369.  
  370.         RET
  371.  
  372. ; ---------------------------------------------------------------------------
  373.  
  374.